<?php

namespace System\library\safety;

/**
 * <b>Class</b> :        AntiSpam<br>
 * <b>Fonction</b> :     Permet la gestion de l'anti-spam
 * <br>
 * @version              1.0
 * @author               Dread <dreadlokeur@gmail.com>
 * @license              Licence publique générale GNU http://www.gnu.org/licenses/gpl.html
 * @copyright            Copyright 2011 - MidichloriansPHP and contributors
 * @package              System
 * @subpackage           library\safety
 */
class AntiSpam {

    /**
     * L'attribut question, sous forme: 1+1=?
     *
     * @var <string>
     * @access private
     */
    private $_question;
    /**
     * L'attribut reponse, l'objet sera généré par la methode generer(), en l'occurence, un md5()
     *
     * @var <string>
     * @access private
     */
    private $_reponse;
    /**
     * L'attribut reponse_user, la réponse que donne l'utilisateur, généralement via un $_POST
     *
     * @var <string>
     * @access private
     */
    private $_reponse_user;

    /**
     * Hash (md5()) la réponse donnée par l'utilisateur  et l'assigne à l'attribut "reponseUser"
     *
     * @access private
     * @param <string> $value: la réponse de l'utilisateur
     * @return <void>
     */
    private function _setReponseUser($value) {
        $this->_reponse_user = md5($value);
    }

    /**
     * Permet de retourner l'attribut "question"  gue la methode "generer()" a assigné une valeur
     *
     * @access public
     * @param <void>
     * @return <string> $this->question: la question de l'antispam
     */
    public function getQuestion() {
        return $this->_question;
    }

    /**
     * Permet de retourner l'attribut "reponse"  gue la methode "generer()" a assigné une valeur
     *
     * @access public
     * @param <void>
     * @return <string> $this->reponse: la réponse de l'antispam
     */
    public function getReponse() {
        return $this->_reponse;
    }

    /**
     * Permet d'assigner des valeurs aux attribut: "question" et "reponse"
     *       on hash via md5() la valeur attribuer à l'attrbut réponse
     *
     * @access public
     * @param <void>
     * @return <void>
     */
    public function generer() {
        $nb1 = rand(1, 5);
        $nb2 = rand(1, 5);
        $this->_question = $nb1 . ' + ' . $nb2 . ' = ?';
        $this->_reponse = md5($nb1 + $nb2);
    }

    /**
     * Vérifie si la réponse donnée par l'utilisateur est indentique à celle de l'anti-spam.
     *
     * @access public
     * @param <string> $reponse_user: la réponse de l'utilisateur
     * @param <string> $reponse: la réponse de l'anti-spam
     * @return <bool>
     */
    public function verifier($reponse_user, $reponse) {
        $this->_setReponseUser($reponse_user);
        $this->_reponse = $reponse;
        return ($this->_reponse_user != $this->_reponse) ? false : true;
    }

}

?>